package org.batatasframework.values;

import java.util.Date;
import java.util.List;


/**
 * 统计的转值处理接口，源类型可能是String或其它类型，可以转为对应的数据类型
 * 
 * 如果是某个字段的，则可以使用{@link ValueReader}接口
 * 
 * 这个接口有发动的话，{@link DelegateValueGetter}这个类需要相应的进行调整
 * 
 * @author jackson
 * @see RangeValue
 * @see MappedValueReader
 * @see ValueReader
 * @see DelegateValueGetter
 */
public interface ValueGetter{

	/** 字符串列表 */
	<T> List<T> asList();
	
	/** 字符串类型 */
	String getString();
	Integer getInteger();
	Long getLong();
	Boolean getBoolean();
	Double getDouble();
	
	<T> T getObject(Class<T> clazz);
	Class<?> getClassType();

	Date getDate(Object arg);
	<E extends Enum<E>> E toEnum(Class<E> clazz);
	
	boolean is(Object target);
}
